package com.reverse.engineering.util.core.run.bean.database;

import java.util.ArrayList;

import com.reverse.engineering.util.core.run.bean.DatabaseProperties;
import com.reverse.engineering.util.core.run.constant.Constant;

/**
 * 数据表的信息
 * 
 * @author liu
 * @date 2020-08-10
 */
public class Table {

    /**表名*/
    private String tableName;
    /**静态表*/
    private String tableStatic;
    /**表注释*/
    private String tableComment;
    /**是否有ID字段*/
    private Boolean existId = false;
    /**ID字段名*/
    private String idName;
    /**是否自动增长,必须有主键*/
    private Boolean existAutoIncrement = false;
    /**主键自动增长语句*/
    private String autoIncrementSql = DatabaseProperties.getAutoIncrementSql();
    /**是否有字段的唯一标识,编号*/
    private Boolean existSerialNumber = false;
    /**唯一标识,编号字段名称*/
    private String serialNumberName;
    /**是否有标记删除字段*/
    private Boolean existDel = false;
    /**标记删除字段的名称*/
    private String delName;
    /**是否有外键*/
    private boolean existsForeignkey;
    /**在Excel中的行数*/
    private int excelLineNumber;
    /**操作: create:创建表,drop:删除表,update:更新表*/
    private String operation = Constant.CREATE;
    /**字段集合*/
    private ArrayList<Field> fields;

    /**
     * 获取表名
     * 
     * @return
     */
    public String getTableName() {
        return tableName;
    }

    /**
     * 设置表名
     * 
     * @param tableName
     */
    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    /**
     * 获取静态表
     * 
     * @return
     */
    public String getTableStatic() {
        return tableStatic;
    }

    /**
     * 设置静态表
     * 
     * @param tableStatic
     */
    public void setTableStatic(String tableStatic) {
        this.tableStatic = tableStatic;
    }

    /**
     * 获取表注释
     * 
     * @return
     */
    public String getTableComment() {
        return tableComment;
    }

    /**
     * 设置表注释
     * 
     * @param tableComment
     */
    public void setTableComment(String tableComment) {
        this.tableComment = tableComment;
    }

    /**
     * 获取是否有ID字段
     * 
     * @return
     */
    public Boolean getExistId() {
        return existId;
    }

    /**
     * 设置是否有ID字段
     * 
     * @param existId
     */
    public void setExistId(Boolean existId) {
        this.existId = existId;
    }

    /**
     * 获取ID字段名
     * 
     * @return
     */
    public String getIdName() {
        return idName;
    }

    /**
     * 设置ID字段名
     * 
     * @param idName
     */
    public void setIdName(String idName) {
        this.idName = idName;
    }

    /**
     * 获取是否自动增长,必须有主键
     * 
     * @return
     */
    public Boolean getExistAutoIncrement() {
        return existAutoIncrement;
    }

    /**
     * 设置是否自动增长,必须有主键
     * 
     * @param existAutoIncrement
     */
    public void setExistAutoIncrement(Boolean existAutoIncrement) {
        this.existAutoIncrement = existAutoIncrement;
    }

    /**
     * 获取主键自动增长语句
     * 
     * @return
     */
    public String getAutoIncrementSql() {
        return autoIncrementSql;
    }

    /**
     * 设置主键自动增长语句
     * 
     * @param autoIncrementSql
     */
    public void setAutoIncrementSql(String autoIncrementSql) {
        this.autoIncrementSql = autoIncrementSql;
    }

    /**
     * 获取是否有字段的唯一标识,编号
     * 
     * @return
     */
    public Boolean getExistSerialNumber() {
        return existSerialNumber;
    }

    /**
     * 设置是否有字段的唯一标识,编号
     * 
     * @param existSerialNumber
     */
    public void setExistSerialNumber(Boolean existSerialNumber) {
        this.existSerialNumber = existSerialNumber;
    }

    /**
     * 获取唯一标识,编号字段名称
     * 
     * @return
     */
    public String getSerialNumberName() {
        return serialNumberName;
    }

    /**
     * 设置唯一标识,编号字段名称
     * 
     * @param serialNumberName
     */
    public void setSerialNumberName(String serialNumberName) {
        this.serialNumberName = serialNumberName;
    }

    /**
     * 获取是否有标记删除字段
     * 
     * @return
     */
    public Boolean getExistDel() {
        return existDel;
    }

    /**
     * 设置是否有标记删除字段
     * 
     * @param existDel
     */
    public void setExistDel(Boolean existDel) {
        this.existDel = existDel;
    }

    /**
     * 获取标记删除字段的名称
     * 
     * @return
     */
    public String getDelName() {
        return delName;
    }

    /**
     * 设置标记删除字段的名称
     * 
     * @param delName
     */
    public void setDelName(String delName) {
        this.delName = delName;
    }

    /**
     * 获取是否有外键
     * 
     * @return
     */
    public boolean isExistsForeignkey() {
        return existsForeignkey;
    }

    /**
     * 设置是否有外键
     * 
     * @param existsForeignkey
     */
    public void setExistsForeignkey(boolean existsForeignkey) {
        this.existsForeignkey = existsForeignkey;
    }

    /**
     * 获取在Excel中的行数
     * 
     * @return
     */
    public int getExcelLineNumber() {
        return excelLineNumber;
    }

    /**
     * 设置在Excel中的行数
     * 
     * @param excelLineNumber
     */
    public void setExcelLineNumber(int excelLineNumber) {
        this.excelLineNumber = excelLineNumber;
    }

    /**
     * 获取操作: create:创建表,drop:删除表,update:更新表
     * 
     * @return
     */
    public String getOperation() {
        return operation;
    }

    /**
     * 设置操作: create:创建表,drop:删除表,update:更新表
     * 
     * @param operation
     */
    public void setOperation(String operation) {
        this.operation = operation;
    }

    /**
     * 获取字段集合
     * 
     * @return
     */
    public ArrayList<Field> getFields() {
        return fields;
    }

    /**
     * 设置字段集合
     * 
     * @param fields
     */
    public void setFields(ArrayList<Field> fields) {
        this.fields = fields;
    }

}